input: Write a function to create a REST API using Flask and SQLAlchemy that provides CRUD (Create, Read, Update, Delete) operations for records in a database. Ensure that the function includes Flask and SQLAlchemy setup, the definition of a Record model, and routes for each CRUD operation. The return of the function should be the Flask application instance.
  
  
  def create_rest_api():
      from flask import Flask, request
      from flask_sqlalchemy import SQLAlchemy
  
      app = Flask(__name__)
      app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
      db = SQLAlchemy(app)
  
      class Record(db.Model):
          id = db.Column(db.Integer, primary_key=True)
          name = db.Column(db.String(120), unique=True)
  
      db.create_all()
  
      @app.route('/records', methods=['GET'])
      def get_records():
          records = Record.query.all()
          return {'records':[record.name for record in records]}
  
      @app.route('/records', methods=['POST'])
      def create_record():
          record = Record(name=request.json['name'])
          db.session.add(record)
          db.session.commit()
          return {'id': record.id}
  
      @app.route('/records/<int:id>', methods=['PUT'])
      def update_record(id):
          record = Record.query.get(id)
          record.name = request.json['name']
          db.session.commit()
          return {'message': 'Record updated'}
  
      @app.route('/records/<int:id>', methods=['DELETE'])
      def delete_record(id):
          Record.query.filter_by(id=id).delete()
          db.session.commit()
          return {'message': 'Record deleted'}
  
      return app
  
  assert create_rest_api().config['SQLALCHEMY_DATABASE_URI'] == 'sqlite:////tmp/test.db'
  assert create_rest_api().url_map._rules[0].rule == '/records'
  assert create_rest_api().url_map._rules[0].methods == {'GET', 'HEAD', 'OPTIONS'}
  assert create_rest_api().url_map._rules[1].methods == {'POST'}
  assert create_rest_api().url_map._rules[2].rule == '/records/<int:id>'
  assert create_rest_api().url_map._rules[2].methods == {'PUT', 'HEAD', 'OPTIONS'}
  assert create_rest_api().url_map._rules[3].methods == {'DELETE'}
  
output: 
  def create_rest_api():
      from flask import Flask, request
      from flask_sqlalchemy import SQLAlchemy
  
      app = Flask(__name__)
      app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
      db = SQLAlchemy(app)
  
      class Record(db.Model):
          id = db.Column(db.Integer, primary_key=True)
          name = db.Column(db.String(120), unique=True)
  
      db.create_all()
  
      @app.route('/records', methods=['GET'])
      def get_records():
          records = Record.query.all()
          return {'records':[record.name for record in records]}
  
      @app.route('/records', methods=['POST'])
      def create_record():
          record = Record(name=request.json['name'])
          db.session.add(record)
          db.session.commit()
          return {'id': record.id}
  
      @app.route('/records/<int:id>', methods=['PUT'])
      def update_record(id):
          record = Record.query.get(id)
          record.name = request.json['name']
          db.session.commit()
          return {'message': 'Record updated'}
  
      @app.route('/records/<int:id>', methods=['DELETE'])
      def delete_record(id):
          Record.query.filter_by(id=id).delete()
          db.session.commit()
          return {'message': 'Record deleted'}
  
      return app
  